// Copyright (C) 2018 Google Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package jdwp

import "fmt"

// ThreadStatus is an enumerator of thread state.
type ThreadStatus int

const (
	ThreadZombie   = ThreadStatus(0)
	ThreadRunning  = ThreadStatus(1)
	ThreadSleeping = ThreadStatus(2)
	ThreadMonitor  = ThreadStatus(3)
	ThreadWait     = ThreadStatus(4)
)

// SuspendStatus is an enumerator of thread suspend state.
type SuspendStatus int

const (
	NotSuspended = SuspendStatus(0)
	Suspended    = SuspendStatus(1)
)

func (s ThreadStatus) String() string {
	switch s {
	case ThreadZombie:
		return "Zombie"
	case ThreadRunning:
		return "Running"
	case ThreadSleeping:
		return "Sleeping"
	case ThreadMonitor:
		return "Monitor"
	case ThreadWait:
		return "Wait"
	}
	return fmt.Sprint(int(s))
}

func (s SuspendStatus) String() string {
	switch s {
	case NotSuspended:
		return "NotSuspended"
	case Suspended:
		return "Suspended"
	}
	return fmt.Sprint(int(s))
}
